Computers have become highly integrated in the workforce, in the home, in mobile devices, and many other places. Computers can process massive amounts of information quickly and efficiently. Software applications designed to run on computer systems allow users to perform a wide variety of functions including business applications, schoolwork, entertainment and more. Software applications are often designed to perform specific tasks, such as word processor applications for drafting documents, or email programs for sending, receiving and organizing email.
In many cases, software applications are designed to interact with or even design other software applications. For instance, integrated development environments can be used by developers to write and debug software applications. Some of these environments are specialized for designing software application user interfaces. These specialized user interface designers are often configured to provide a what-you-see-is-what-you-get (WYSIWYG) design experience. Using such a designer, a developer may simply drag and drop user interface (UI) elements onto the UI that is being designed, and the specialized UI designer application will write the software code corresponding to the user's drag and drop actions.